home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 49 / Amiga Format CD49 (2000-01-17)(Future Publishing)(GB)(Track 1 of 3)[!][issue 2000-02].iso / -serious- / misc / football / user / endofseason.rexx < prev    next >
OS/2 REXX Batch file  |  1999-11-29  |  21KB  |  772 lines

  1. /* Mode=Run */
  2. /* ***********************************************************************
  3.  
  4.    END OF SEASON PROGRAM FOR FOOTBALL REXX SUITE
  5.   -----------------------------------------------
  6.                    Copyright  Mark Naughton 1997
  7.  
  8.  
  9. Version    Date     History
  10. --------------------------------------------------------------------------
  11.  1.0       061097   First release - after about 10 days and loads of
  12.                     hassle and numerous variations in the method for
  13.                     swapping/deleting teams between divisions.
  14.            250899   Added error msg to file checks.
  15.            110999   Converted to use locale. Some error messages, before
  16.                     reading the locale, will still be in English.
  17.            190999   Added support for subdirectories in "Data/".
  18.  
  19. **************************************************************************
  20.  
  21. Procedure
  22. ---------
  23.  
  24. 1. Check files exist.
  25. 2. Read number of divisions and divisions. Then store.
  26. 3. Search all leagues/divisions to see if all matches have been played,
  27.    if not, then give error and exit.
  28. 4. Create all league/division tables and save to temporary files.
  29. 5. Display the winner, teams relegated and teams promoted for each
  30.    division.
  31. 6. Loop. Read teams from division then swap/delete those teams that have
  32.    been relegated/promoted between adjoining leagues/divisions. Write to
  33.    temporary file when complete. End loop.
  34. 7. Loop. Read previous '.df' file and using data from temporary files
  35.    created in (6), create '_NewData.df' files for each league/division.
  36.    End loop.
  37. 8. Display message about '_NewData.df' files.
  38. 9. Display final league/division tables.
  39. 10.Erase temporary files. Exit.
  40.  
  41. ************************************************************************** */
  42. PARSE ARG league_stuff
  43.  
  44. version      = 1
  45. input_file   = '.df'
  46. input2_file  = '.sf'
  47. stored_divs. = '???'
  48. league_title = '*LEAGUE_NAME='
  49. num_divs     = '*NUM_DIVISIONS='
  50. divisions    = '*DIVISIONS='
  51. releg        = '*RELEGATION='
  52. promoted     = '*PROMOTED='
  53. not_played   = '__   __'
  54. ndivs        = 1
  55. divs         = ''
  56. promo        = 0
  57. relg         = 2
  58. separator    = '*'
  59.  
  60. defcts.      = '???'
  61. titles.      = '???'
  62. names.       = '???'
  63. defs.        = '???'
  64. div1.        = '???'
  65. subdir       = '##NONE'
  66.  
  67.  
  68. if pos("/",league_stuff) > 0 then
  69.    parse var league_stuff subdir "/" .
  70.  
  71. league_file  = "Data/" || league_stuff
  72.  
  73. if open(datafile,"Data/Football.locale",'r') then do
  74.    line = readln(datafile)
  75.    locdir = strip(line)
  76.    close(datafile)
  77. end
  78. else do
  79.    say
  80.    say "ERROR :    (EndOfSeason)"
  81.    say
  82.    say "Cannot read 'Data/Football.locale' for the locale settings."
  83.    exit
  84. end
  85.  
  86. locdir = locdir"User/EndOfSeason.data"
  87.  
  88. if open(datafile,"ENV:FootballRXPath",'r') then do
  89.    line = readln(datafile)
  90.    rxdir = strip(line)
  91.    close(datafile)
  92. end
  93. else
  94.    rxdir = "SYS:Rexxc/"
  95.  
  96. if exists(locdir) > 0 then do
  97.   address command rxdir'rx 'locdir
  98.   VarCount = getclip('VarCount')
  99.   do i = 1 to VarCount
  100.     interpret getclip('var.'i)
  101.   end
  102. end
  103. else do
  104.    say
  105.    say "ERROR :    (EndOfSeason)"
  106.    say
  107.    say "Cannot find '"locdir"' to read locale settings."
  108.    exit
  109. end
  110.  
  111.  
  112. if exists(league_file || input_file) = 0  then do
  113.    say
  114.    say eos_error
  115.    say
  116.    say eos_t1"'"league_file || input_file"'."
  117.    exit
  118. end
  119.  
  120. if exists(league_file || input2_file) = 0 then do
  121.    say
  122.    say eos_error
  123.    say
  124.    say eos_t1"'"league_file || input2_file"'."
  125.    exit
  126. end
  127.  
  128. if open(datafile,league_file || input_file,'r') then do
  129.    do while ~eof(datafile)
  130.       line = readln(datafile)
  131.       if pos(num_divs,line) > 0 then     ndivs = delstr(line,1,15)
  132.       if pos(divisions,line) > 0 then    divs  = delstr(line,1,11)
  133.    end
  134.    close(datafile)
  135. end
  136. else do
  137.    say
  138.    say eos_error
  139.    say
  140.    say eos_t2"'"league_file || input_file"'."
  141.    exit
  142. end
  143.  
  144. stored_divs.1 = league_file
  145.  
  146. do i=2 to ndivs
  147.    stored_divs.i = "Data/"word(divs,i-1)
  148. end
  149.  
  150. access = "NONE"
  151. do i=1 to ndivs
  152.    if open(datafile,stored_divs.i || input2_file,'r') then do
  153.       do while ~eof(datafile)
  154.          line = readln(datafile)
  155.          if pos(not_played,line) > 0 then do
  156.             access = stored_divs.i
  157.             leave
  158.          end
  159.       end
  160.       close(datafile)
  161.    end
  162.    if pos("NONE",access) = 0 then do
  163.       say eos_t7" '"access"' "eos_t11
  164.       say eos_t12
  165.       exit
  166.    end
  167.    access = "NONE"
  168. end
  169.  
  170. /* All matches have been played in the league, so the program continues... */
  171.  
  172.  
  173.                                 /* create league tables */
  174. do i=1 to ndivs
  175.    call create_table(stored_divs.i)
  176. end
  177.                               /* print title and winners/losers */
  178. say
  179. say "                               "eos_t13
  180. say "                               "eos_t14
  181. say
  182. say
  183. defcnt = 0
  184. do i=1 to ndivs
  185.    if open(datafile,stored_divs.i || input_file,'r') then do
  186.       do while ~eof(datafile)
  187.          line = readln(datafile)
  188.          if pos(league_title,line) > 0 then  title = delstr(line,1,13)
  189.          if pos(releg,line) > 0 then         relg  = delstr(line,1,12)
  190.          if pos(promoted,line) > 0 then      promo = delstr(line,1,10)
  191.       end
  192.       close(datafile)
  193.    end
  194.    else do
  195.       say
  196.       say eos_error
  197.       say
  198.       say eos_t2"'"stored_divs.i || input_file"'."
  199.       exit
  200.    end
  201.  
  202.    if pos(subdir,stored_divs.i) > 0 then
  203.       parse var stored_divs.i "Data/" . "/" name .
  204.    else
  205.       parse var stored_divs.i . "/" name .
  206.    a = 0
  207.    if open(datafile,"RAM:"||name||".final_table",'r') then do
  208.       do while ~eof(datafile)
  209.          line = readln(datafile)
  210.          a = a + 1
  211.          div1.a = line
  212.       end
  213.       close(datafile)
  214.    end
  215.    else do
  216.       say
  217.       say eos_error
  218.       say
  219.       say eos_t2"'RAM:"name".final_table'."
  220.       exit
  221.    end
  222.    say "           "left(eos_t7,10," ")": "title
  223.    titles.i = title
  224.    say
  225.    defcnt = defcnt + 1
  226.    if i=1 then do
  227.       say "           "left(eos_t8,10," ")": "substr(div1.1,1,35)
  228.       defs.defcnt = name" WINR "trim(substr(div1.1,1,35))
  229.    end
  230.    else do
  231.       do b=1 to promo
  232.          if b=1 then do
  233.             say "           "left(eos_t9,10," ")": "substr(div1.b,1,35)
  234.             defs.defcnt = name" PROM * "trim(substr(div1.b,1,35))
  235.          end
  236.          else do
  237.             say "                       "substr(div1.b,1,35)
  238.             defs.defcnt = defs.defcnt" * "trim(substr(div1.b,1,35))
  239.          end
  240.       end
  241.    end
  242.    defcnt = defcnt + 1
  243.    say
  244.    start= a - relg         /* was start+1 */
  245.    do b = start to a
  246.       if div1.b ~= "" then do
  247.          if b = start then do
  248.             say "           "left(eos_t10,10," ")": "substr(div1.b,1,35)
  249.             defs.defcnt = name" RELG * "trim(substr(div1.b,1,35))
  250.          end
  251.          else do
  252.             say "                       "substr(div1.b,1,35)
  253.             defs.defcnt = defs.defcnt" * "trim(substr(div1.b,1,35))
  254.          end
  255.       end
  256.    end
  257.    say
  258.    say
  259. end
  260.  
  261. say "                             ---------------------"
  262.  
  263. /* swap/delete teams between divisions, write new files */
  264.  
  265. do i=1 to ndivs
  266.    if pos(subdir,stored_divs.i) > 0 then
  267.       parse var stored_divs.i "Data/" . "/" name .
  268.    else
  269.       parse var stored_divs.i . "/" name .
  270.  
  271. /*   parse var stored_divs.i . "/" name . */          /* read teams into memory */
  272.    n = 0
  273.    if open(datafile,"RAM:"||name||".final_table",'r') then do
  274.       do while ~eof(datafile)
  275.          line = readln(datafile)
  276.          n = n + 1
  277.          div1.n = trim(substr(line,1,35))
  278.       end
  279.       close(datafile)
  280.    end
  281.    else do
  282.       say
  283.       say eos_error
  284.       say
  285.       say eos_t2"'RAM:"name".final_table'."
  286.       exit
  287.    end
  288.  
  289.    b = 0
  290.    do a=1 to defcnt
  291.       if pos(name,defs.a) = 0 then
  292.          iterate
  293.       if pos("RELG",defs.a) > 0 then do         /* Check for relegation code */
  294.          b = a + 1
  295.          if pos("PROM",defs.b) = 0 then do
  296.             do m=1 to n
  297.                if pos(div1.m,defs.a) > 0 then         /* delete relegated teams */
  298.                   div1.m = "Deleted Team"
  299.             end
  300.          end
  301.          else do
  302.             do m=1 to n
  303.                if pos(div1.m,defs.a) > 0 then          /* delete relegated teams... */
  304.                   div1.m = "Deleted Team"
  305.             end
  306.             parse var defs.b . "* " names.1 " * " names.2 " * " names.3 " * " names.4 " * " names.5 " * " names.6 " *"
  307.             c = 1
  308.             if div1.n = '' then
  309.                n = n - 1
  310.             do while names.c ~=''           /* ...then add the newly promoted ones! */
  311.                n = n + 1
  312.                div1.n = names.c
  313.                c = c + 1
  314.             end
  315.          end
  316.          if open(datafile2,"RAM:"word(defs.a,1)".teams",'w') then do
  317.             do p=1 to n
  318.                if pos("Deleted Team",div1.p) = 0 then       /* create teams file in RAM: */
  319.                   writeln(datafile2,div1.p)
  320.             end
  321.             close(datafile2)
  322.          end
  323.          else do
  324.             say
  325.             say eos_error
  326.             say
  327.             say eos_t2"'RAM:"word(defs.a,1)".teams'"eos_t4
  328.             exit
  329.          end
  330.       end
  331.       else do
  332.          if pos("PROM",defs.a) > 0 then do         /* Check for promotion code */
  333.             b = a - 1
  334.             if b=0 then
  335.                iterate
  336.             if pos("RELG",defs.b) = 0 then do
  337.                do m=1 to n
  338.                   if pos(div1.m,defs.a) > 0 then   /* delete promoted teams */
  339.                      div1.m = "Deleted Team"
  340.                end
  341.             end
  342.             else do
  343.                do m=1 to n                           /* delete promoted teams... */
  344.                   if pos(div1.m,defs.a) > 0 then
  345.                      div1.m = "Deleted Team"
  346.                end
  347.                parse var defs.b . "* " names.1 " * " names.2 " * " names.3 " * " names.4 " * " names.5 " * " names.6 " *"
  348.                c = 1
  349.                if div1.n = '' then
  350.                   n = n - 1
  351.                do while names.c ~=''           /* ...then add the newly relegated ones! */
  352.                   n = n + 1
  353.                   div1.n = names.c
  354.                   c = c + 1
  355.                end
  356.             end
  357.             if open(datafile2,"RAM:"word(defs.a,1)".teams",'w') then do
  358.                do p=1 to n
  359.                   if pos("Deleted Team",div1.p) = 0 then
  360.                      writeln(datafile2,div1.p)
  361.                end
  362.                close(datafile2)                      /* write teams file */
  363.             end
  364.             else do
  365.                say
  366.                say eos_error
  367.                say
  368.                say eos_t2"'RAM:"word(defs.a,1)".teams'"eos_t4
  369.                exit
  370.             end
  371.          end
  372.       end
  373.    end
  374. end
  375.                                          /* read each league and rewrite 'df' file with new teams */
  376. do i=1 to ndivs
  377.  
  378.    parse var stored_divs.i . "/" name .
  379.  
  380.    if open(datafile2,"Data/"name"_NewData"input_file,'w') then do
  381.       if open(datafile,"Data/"name||input_file,'r') then do
  382.          do while ~eof(datafile)
  383.             line = readln(datafile)
  384.             if pos(separator,line) > 0 then
  385.                writeln(datafile2,line)
  386.          end
  387.          close(datafile)
  388.       end
  389.       else do
  390.          say
  391.          say eos_error
  392.          say
  393.          say eos_t2"'Data/"name||input_file"'"eos_t3
  394.          exit
  395.       end
  396.       if pos(subdir,stored_divs.i) > 0 then
  397.          parse var stored_divs.i "Data/" . "/" name .
  398.       else
  399.          parse var stored_divs.i . "/" name .
  400.  
  401.       if open(datafile,"RAM:"name".teams",'r') then do
  402.          do while ~eof(datafile)
  403.             line = readln(datafile)
  404.             writeln(datafile2,line)
  405.          end
  406.          close(datafile)
  407.       end
  408.       else do
  409.          say
  410.          say eos_error
  411.          say
  412.          say eos_t2"'RAM:"name".teams'"eos_t3
  413.          exit
  414.       end
  415.       close(datafile2)
  416.    end
  417.    else do
  418.      say
  419.      say eos_error
  420.      say
  421.      say eos_t2"'Data/"name"_NewData"input_file"'"eos_t4
  422.      exit
  423.    end
  424. end
  425.                         /* display message */
  426. say
  427. say
  428. say "        "eos_t15
  429. say "        "eos_t16
  430. say "        "eos_t17
  431. say
  432. do i=1 to ndivs
  433.    parse var stored_divs.i . "/" name .
  434.    say "                   '"name"_NewData"input_file"'"
  435. end
  436. say
  437. say "        "eos_t18
  438. say "        "eos_t19
  439. say "        "eos_t20
  440. say "        "eos_t21
  441. say "        "eos_t22
  442. say
  443. say "        "eos_t23
  444. say "        "eos_t24
  445. say
  446. say "                             ---------------------"
  447.  
  448. /* display final league tables */
  449.  
  450. say
  451. say
  452. say "                            "eos_t25
  453. say "                            "eos_t26
  454. say
  455. say
  456. do i=1 to ndivs
  457.    uline = ''
  458.    do c=1 to length(titles.i)
  459.       uline = insert('-',uline,c,1)
  460.    end
  461.    uline = strip(uline)
  462.    say "    "left(eos_t7,9," ")": "titles.i
  463.    say "               "uline
  464.    say
  465.    say eos_t27
  466.    say "-----------------------------------------------------------------------------------------"
  467.    a = 1
  468. /*   parse var stored_divs.i . "/" name . */
  469.    if pos(subdir,stored_divs.i) > 0 then
  470.       parse var stored_divs.i "Data/" . "/" name .
  471.    else
  472.       parse var stored_divs.i . "/" name .
  473.  
  474.    if open(datafile,"RAM:"||name||".final_table",'r') then do
  475.       do while ~eof(datafile)
  476.          line = readln(datafile)
  477.          if line ~= '' then do
  478.             if strip(substr(line,76,5)) = 0 then line=overlay("",line,76,5," ")
  479.             if a<10 then do
  480.                if a = 1 then line = upper(line)
  481.                say " "a") "line
  482.             end
  483.             else
  484.                say a") "line
  485.             a = a + 1
  486.          end
  487.       end
  488.       close(datafile)
  489.    end
  490.    else do
  491.       say
  492.       say eos_error
  493.       say
  494.       say eos_t2"'RAM:"name".final_table'"eos_t3
  495.       exit
  496.    end
  497.    say
  498.    say
  499. end
  500. say "                             ---------------------"
  501. say
  502.                      /* erase all temporary files */
  503. do i=1 to ndivs
  504. /*   parse var stored_divs.i . "/" name . */
  505.    if pos(subdir,stored_divs.i) > 0 then
  506.       parse var stored_divs.i "Data/" . "/" name .
  507.    else
  508.       parse var stored_divs.i . "/" name .
  509.  
  510.    filen = "RAM:"||name||".final_table"
  511.    address command 'delete >NIL: 'filen
  512.    filen = "RAM:"||name||".teams"
  513.    address command 'delete >NIL: 'filen
  514. end
  515.  
  516. exit
  517.  
  518. /* Procedure --------------------------------------------------------- */
  519.  
  520. create_table :
  521. parse arg league_table2
  522.  
  523. input_file   = '.df'
  524. input2_file  = '.sf'
  525. not_played   = '__   __'
  526. input3_file   = '.stats'
  527. output_file  = 'Data/League.output'
  528. points_win   = '*POINTS_PER_WIN='
  529. points_drw   = '*POINTS_PER_DRW='
  530. points_lse   = '*POINTS_PER_LSE='
  531. points_gls   = '*POINTS_PER_GLS='
  532. team         = '*TEAM='
  533. played       = '*PLY='
  534. won          = '*WIN='
  535. drawn        = '*DRW='
  536. lost         = '*LST='
  537. goalsf       = '*GOF='
  538. goalsa       = '*GOA='
  539. points       = '*PTS='
  540. separator    = '*'
  541. teams.       = '???'
  542. teams2.      = '???'
  543. m_ply.       = '???'
  544. m_win.       = '???'
  545. m_drw.       = '???'
  546. m_lost.      = '???'
  547. m_gof.       = '???'
  548. m_goa.       = '???'
  549. m_pts.       = '???'
  550. ptsgls       = 0
  551. ptswin       = 2
  552. ptsdrw       = 1
  553. ptslse       = 0
  554. league_table = league_table2
  555.  
  556.  
  557. if exists(league_table || input3_file) = 0 then do
  558.    say
  559.    say eos_error
  560.    say
  561.    say eos_t2"'"league_table||input3_file"' "eos_t5
  562.    exit
  563. end
  564.  
  565. tcount = 0
  566. if open(datafile,league_table || input_file,'r') then do
  567.    do while ~eof(datafile)
  568.       line = readln(datafile)
  569.       if pos(points_win,line) > 0 then   ptswin=delstr(line,1,16)
  570.       if pos(points_drw,line) > 0 then   ptsdrw=delstr(line,1,16)
  571.       if pos(points_lse,line) > 0 then   ptslse=delstr(line,1,16)
  572.       if pos(points_gls,line) > 0 then   ptsgls=delstr(line,1,16)
  573.       if pos(separator,line) = 0 then do
  574.          line = strip(line)
  575.          tcount       = tcount + 1
  576.          teams.tcount = line
  577.       end
  578.    end
  579.    close(datafile)
  580. end
  581. else do
  582.    say
  583.    say eos_error
  584.    say
  585.    say eos_t2"'"league_table || input_file"'."
  586.    exit
  587. end
  588.  
  589. team_ctr = 0
  590. if open(datafile,league_table || input3_file,'r') then do
  591.    do while ~eof(datafile)
  592.       line = readln(datafile)
  593.       if pos(team,line) > 0 then    team_ctr = team_ctr + 1
  594.       if pos(played,line) > 0 then  m_ply.team_ctr  = delstr(line,1,5)
  595.       if pos(won,line) > 0 then     m_won.team_ctr  = delstr(line,1,5)
  596.       if pos(drawn,line) > 0 then   m_drw.team_ctr  = delstr(line,1,5)
  597.       if pos(lost,line) > 0 then    m_lost.team_ctr = delstr(line,1,5)
  598.       if pos(goalsf,line) > 0 then  m_gof.team_ctr  = delstr(line,1,5)
  599.       if pos(goalsa,line) > 0 then  m_goa.team_ctr  = delstr(line,1,5)
  600.       if pos(points,line) > 0 then  m_pts.team_ctr  = delstr(line,1,5)
  601.    end
  602.    close(datafile)
  603. end
  604. else do
  605.    say
  606.    say eos_error
  607.    say
  608.    say eos_t2"'"league_table || input3_file"'"eos_t3
  609.    exit
  610. end
  611.  
  612. if open(datafile,league_table || input2_file,'r') then do
  613.    do while ~eof(datafile)
  614.       line = readln(datafile)
  615.       if pos(separator,line) = 0 then do
  616.          if pos(not_played,line) = 0 then do
  617.             home_team = strip(substr(line,1,30))
  618.             goals_for = substr(line,32,2)
  619.             goals_aga = substr(line,37,2)
  620.             away_team = strip(substr(line,41,30))
  621.  
  622.             do ik=1 to tcount
  623.                if home_team = teams.ik then do
  624.                   m_ply.ik = m_ply.ik + 1
  625.                   m_gof.ik = m_gof.ik + goals_for
  626.                   m_goa.ik = m_goa.ik + goals_aga
  627.                   if goals_for = goals_aga then do
  628.                      m_drw.ik = m_drw.ik + 1
  629.                      m_pts.ik = m_pts.ik + ptsdrw
  630.                   end
  631.                   if goals_for < goals_aga then do
  632.                      m_lost.ik= m_lost.ik + 1
  633.                      m_pts.ik = m_pts.ik + ptslse
  634.                   end
  635.                   if goals_for > goals_aga then do
  636.                      m_won.ik = m_won.ik + 1
  637.                      m_pts.ik = m_pts.ik + ptswin
  638.                   end
  639.                   m_pts.ik = m_pts.ik + (goals_for * ptsgls)
  640.                end
  641.             end
  642.             do ik=1 to tcount
  643.                if away_team = teams.ik then do
  644.                   m_ply.ik = m_ply.ik + 1
  645.                   m_gof.ik = m_gof.ik + goals_aga
  646.                   m_goa.ik = m_goa.ik + goals_for
  647.                   if goals_for = goals_aga then do
  648.                      m_drw.ik = m_drw.ik + 1
  649.                      m_pts.ik = m_pts.ik + ptsdrw
  650.                   end
  651.                   if goals_for < goals_aga then do
  652.                      m_won.ik = m_won.ik + 1
  653.                      m_pts.ik = m_pts.ik + ptswin
  654.                   end
  655.                   if goals_for > goals_aga then do
  656.                      m_lost.ik= m_lost.ik + 1
  657.                      m_pts.ik = m_pts.ik + ptslse
  658.                   end
  659.                   m_pts.ik = m_pts.ik + (goals_aga * ptsgls)
  660.                end
  661.             end
  662.          end
  663.       end
  664.    end
  665.    close(datafile)
  666. end
  667. else do
  668.    say
  669.    say eos_error
  670.    say
  671.    say eos_t2"'"league_table || input2_file"'."
  672.    exit
  673. end
  674.  
  675. if open(outfile,output_file,"w") then do
  676.    do ik=1 to tcount
  677.       line = teams.ik
  678.       line = insert(" ",line,length(line)+1,30-length(line))
  679.       mp = right(m_ply.ik,3)
  680.       mw = right(m_won.ik,3)
  681.       md = right(m_drw.ik,3)
  682.       ml = right(m_lost.ik,3)
  683.       mgf = right(m_gof.ik,5)
  684.       mga = right(m_goa.ik,5)
  685.       mpts = right(m_pts.ik,7)
  686.       writech(outfile,line"   "mp" "mw" "md" "ml" "mgf" "mga"  "mpts"      ")
  687.       itemp=mgf-mga
  688.       if itemp>0 then
  689.          itemp=insert("+",itemp,0,1)
  690.       itemp=right(itemp,4)
  691.       writeln(outfile,itemp)
  692.    end
  693.    close(outfile)
  694. end
  695. else do
  696.    say
  697.    say eos_error
  698.    say
  699.    say eos_t6" '"output_file"'."
  700.    exit
  701. end
  702.  
  703. address command 'Exec/footsort '
  704.  
  705. if open(datafile2,output_file,'r') then do
  706.    do ik=1 to tcount
  707.       line = readln(datafile2)
  708.       teams.ik  = line
  709.       teams2.ik = line
  710.    end
  711.    close(datafile2)
  712. end
  713. else do
  714.    say
  715.    say eos_error
  716.    say
  717.    say eos_t2"'"output_file"'"eos_t3
  718.    exit
  719. end
  720.  
  721. ctr = 0
  722. do while swapctr > 0
  723.    swapctr=9
  724.    do ik=1 to tcount-1                               /* was 64,4 and 77,4 */
  725.       swapdone=0
  726.       j = i + 1
  727.       if strip(substr(teams.ik,64,7)) = strip(substr(teams.j,64,7)) then do
  728.          goaldiffa = strip(substr(teams.ik,77,5))
  729.          goaldiffb = strip(substr(teams.j,77,5))
  730.          if goaldiffa < goaldiffb then do
  731.             teams.ik = teams2.j
  732.             teams.j = teams2.ik
  733.             teams2.ik= teams.ik
  734.             teams2.j= teams.j
  735.             swapdone= 1
  736.             ctr = ctr + 1
  737.          end
  738.       end
  739.       if swapdone = 1 then
  740.          break
  741.    end
  742.    if ctr = 0 then
  743.       swapctr = 0
  744.    else
  745.       ctr = 0
  746. end
  747.  
  748. if pos(subdir,league_table) > 0 then
  749.    parse var league_table "Data/" . "/" name .
  750. else
  751.    parse var league_table . "/" name .
  752.  
  753. /* parse var league_table . "/" name . */
  754.  
  755. if open(datafile2,"RAM:"||name||".final_table",'w') then do
  756.    do ik=1 to tcount
  757.       if strip(substr(teams.ik,76,5)) = 0 then teams.ik=overlay("",teams.ik,76,5," ")
  758.       writeln(datafile2,teams.ik)
  759.    end
  760.    close(datafile2)
  761. end
  762. else do
  763.    say
  764.    say eos_error
  765.    say
  766.    say eos_t2"'RAM:"name".final_table'"eos_t4
  767.    exit
  768. end
  769.  
  770. return
  771.  
  772. /*******************************************************************************/